package main;

import java.io.FileWriter;
import java.io.IOException;

import resolution.ResolutionFirstFit;
import resolution.ResolutionRandom;
import Probleme.Generator;
import Probleme.Instance;

public class Main {
	
	public static final String csvFile = "Z:/Workspace/OC_ProblemeBoite/src/data.csv";
	public static FileWriter w;
	
	public static void ecrire_Fichier(int Instance, String Methode, int maxBoite, int NbObjets, int nbBoite, float optimum, float recouvrement)
	        throws IOException {
		Main.w.write(Instance + ";" + Methode + ";" + maxBoite + ";" + NbObjets + ";" + nbBoite + ";" + (recouvrement*100) + "%\n");
		
	}
	
	public static void main(String[] args) throws IOException {
		
		Main.w = new FileWriter(Main.csvFile);
		
		Main.w.write("Instance;Methode;MaxBoite;NombreObjets;Nombre boite;Recouvrement \n");
		System.out.println("-- Debut de l'analyse -- ");
		
		ResolutionFirstFit rf;
		ResolutionRandom rr;
		
		Generator xtest = new Generator(100, 1000, 500);
		long BigCount = System.currentTimeMillis();
		
		for (int i = 0; i < xtest.nbinst; i++) {
			
			Instance inst = xtest.instances.get(i);
			rf = new ResolutionFirstFit(xtest.instances.get(i));
			float optimum = inst.getObjets().getPoids() / inst.getPoidsMax();
			float recouvrement = optimum / rf.getS().getLesBoites().size();
			Main.ecrire_Fichier(i, "First Fit", inst.getPoidsMax(), inst.getObjets().size(), rf.getS().getLesBoites().size(), optimum, recouvrement);
			
			rr = new ResolutionRandom(xtest.instances.get(i));
			optimum = inst.getObjets().getPoids() / inst.getPoidsMax();
			recouvrement = optimum / rr.getS().getLesBoites().size();
			Main.ecrire_Fichier(i, "Random", inst.getPoidsMax(), inst.getObjets().size(), rr.getS().getLesBoites().size(), optimum, recouvrement);
			
		}
		
		Main.w.flush();
		Main.w.close();
		BigCount = (System.currentTimeMillis() - BigCount) / 1000;
		System.out.println("-- Fin de l'analyse (" + BigCount + " secondes) -- ");
	}
	
}
